Эм. Ну если триггерно делаешь, то мути так: speed=maxspeed*(1-distance/max_distance) , где speed- текущая. maxspeed- начальная скорость (самая максимальная без замедления), distance (уже пройденное расстояние), maxdistance (максимальное расстояние).
Ой. не дочитал. Там зависимость еще от времени. Ну тогда вообще не проблема.
Мб тогда стоит к школьной физике обратиться?) S=V0+(at^2)/2. A будет отрицательной (a=-V0/t), т.к конечная скорость = 0.
S=V0t+(at^2)/2.
Событие каждые 1 сек времени
пауза triggering unit
^ Не имеет смысла, здесь нет triggering unit, исправляй, сообщи об изменениях или неизменениях.
У тя там чета про убийства ещё, но спрятать юнит проиграв анимацию смерти не означает его убийство и из группы он не удаляется, если состоит. Так что имей в виду.
Триггерно Событие
потом действие
звук- играть
но изначально нужно найти необходимый звук в редакторе звуков кликнуть правой кнопкой мыши использовать как звук :)
сделайте счетчик, целочисленную переменную берем, назовем ее Int. В начале игры приравниваем к нулю (хотя на гуи можно задать в редакторе переменных)
С каждым разом когда задание выполняется, вы складывается
set Int = Int + 1
способ 2
еще с массивами можно поиграться, создаете переменную типа квест с массивом, и засовываете каждое задание в массив переменной. В начале игры создаете или когда будете получать
допустим создаете 5 разных квестов в начале игры
set quest[0] = создать квест
set quest[1] = создать квест
и так далее
... [2] = ...
... [3] = ...
... [4] = ...
set quest[5] = создать квест
тут должна быть еще одна целочисленная переменная - счетчик на кол-во взятых задании, независимо от того, выполнено или не выполнено. Как только получаешь еще одно задание, то прибавляешь к этой переменной. Эта переменная нужна для цикла, точнее для выхода из цикла. Назовем ее max
set max = 5 //всего 5 квестов создали
И еще одна целочисленная переменная нужна для подсчета кол-ва выполненных квестов, назовем K
циклом прогоняете и проверяете, сколько выполнено квестов (есть условие в boolean по квестам, что данный квест выполнен/провален и др.)
set K = 0 //перед циклом лучше обнулить счетчик
цикл от А до max
if quest[A] == пройден then //найдешь в boolean
set K = K + 1
endif
))
то что получим в переменной К после цикла, и будет определять кол-во
Фон кампании в стандарте - это отдельная модель сцены, которую мы видим. Сделать такое невероятно сложно по причине нехватки нужных редакторов с работой подобных моделей и в том числе отсутствие внятного освещения. Она имеет несколько анимаций, зачастую birth stand ну и разумеется настроенные и анимированные камеры.
Немного оптимизировал текстурки, убрал альфаканал. В mdlvis качество ухудшилось не сильно, тестируй. На счет моделей, там итак анимаций почти нет, скелет резать негде ОО
Забыль
то что ты скинул это VJass. Короче нужен тебе JNGP, там же включить плагин UMS. Затем должен сохранить два раза. мб инфа пригодиться как использовать JNGP. По идее щас более новый JNGP и проблем не должно быть
вот карта
Пробовать не хочу, но предложу вот, что:
Если цель - защитить карту от подглядывания. То при старте игры или инициализации (если получится) можно запустить триггер с условием Вид: карта разведана is Set == да (процитировал текст условия из Гуи), действие - замкнутый цикл, или вызвать фатальную ошибку, вылет и т.д. Суть в том, что когда игрок запустит карту с такими параметрами, то тупо закрашить варик.
есть событие - юнит получает урон. в нём отслеживается как жертва, так и наносящий урон. можно хоть через хэш, хоть через структуру Юнита записывать всё, что угодно. Кто от кого конкретно сколько получил урона, кто кому сколько нанёс, сколько провисел на ком-то бафф яда и т.п. (Сначала был loop, а теперь периодический триггер). Каждые N секунд, перебираешь всех юнитов в массиве или списке, и отслеживаешь всё, что надо.
Структура - Unit. У неё есть двойной список с юнитами и уроном от яда (полученным или нанесённым - зависит от того, у кого будет этот список - у жертв или у тех, кто наносит яд). Типа DoubleList. В DoubleList есть элементы DoubleElement. В каждом таком элементе записаны unit и real (урон от яда от этого юнита). При получении урона от яда перебирается список, если юнит уже есть, урон от него (или ему) прибавляется. Если нет, то создаётся новый элемент с новым юнитом.
Периодически у нужных юнитов эти списки перебираются. Всё.
во первых: не надо дублировать вопросы
во вторых: у меня твоя карта открывается
правда я не настолько сумасшедший чтобы юзать вин10
в третьих: размер мапы большой и может тупо не хватать памяти (особенно если юзаешь вин10)
советую попробовать переустановить jngp
если не поможет то сменить винду
JNGP снимает ограничения (например максимум декорации 20к), если обычным редактором открыть критует. В jngp есть новые гуишные функции, которых нет в обычном, стандартный редактор их не распознает. Юзайте поиск, такой вопрос уже задавали
Просто , нужно тогда будет удалять старый плавающий текст с тем значением , либо там есть замена , ну если вообще не сможешь можешь кинуть мапу , сделаю быстренько .
После создания текста скрываешь его от всех.
Обращение идёт на группу игроков - все игроки.
Далее берёшь группу (новую, переменная) и заносишь в неё только тех игроков, которые должны увидеть этот текстаг.
Например через аналог "отряда" для юнитов - Группа игроков - действие...
Если выбранный игрок видит точку/юнита - то добавить его в группу
Далее - показать текст этой группе
В конце - очистить группу (удалить/затереть, если это локалка)
да я решыл проблему я просто перегрузил комп
Я понел в чом проблема я поставил в vjass 2 галки нижние включил из надо отключать и тогды проблем не будет
создать.
направить на 128 точек наверх(90)
сделать неперманентным
текст удалится через 3 секунды
текст затухнет до 100% прозрачности через 3 секунды
Вот чёрт. не успел приплюснуть к посту.
1 Попробуй через игровой интерфейс где "броня" поставить "Защита: |c00000000" Возможно цифра станет чёрной и следовательно невидимой.
2 Импортируй нестандартную модель времени, которая закрывает ту часть, что с бронёй, это сработает точно.
Проверил из интереса. нет 1 способ не канает, только слово защита затереть можно. Иконку можно поставить чёрную или прозрачную, оставив лишь циферку. Если всё-таки хочется скрыть всё - импортируй модель времени, например из карты Ded moroz battle
потому что чистить группы игроков - это уже изврат
запихивай нужных игроков в переменную и с ней работай, в конце действий - обнуляй
а так ты уже борщишь
и про опт стоит задумываться, если у тебя объем кода как в доте, к примеру. тогда да
иначе - какой смысл?
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Попробуй отключить триггеры, для начала, и затем проверь, запустится ли карта в игре. Особенно те, которые были созданы/редактированы относительно недавно до появления фатала.
Sergey105, проблема в способе хранения а не в вджасс
цикл бегает от 1 до count включительно
первый объект будет в 1 ячейке
второй во 2
третий в третьей
count равен 3
раз время везде 6 секунд то первой освободиться первая ячейка
count станет равен 2
и цикл будет обрабатывать ячейки 1(пустая) и 2
но объект в 3 ячейке всё ещё остался так как время для него не закончилось
а так как мы его не удалили а просто потеряли то и эффект и экземпляр структуры остаются
и того утечка памяти
вот статья которую можно юзать как пример
Функшн поинтеров помимо типа code в жассе нет. Можно полагаться только на ExecuteFunc, куда аргументы передаются только глобалками, соответственно никакого тайпчекинга.
Использовать можно например так
struct mystruct
static method mymethod takes nothing returns nothing
call BJDebugMsg("this works")
endmethod
endstruct
function myfunction takes nothing returns nothing
call ExecuteFunc(mystruct.mymethod.name) //ExecuteFunc compatibility
call OnAbilityCast('A000',mystruct.mymethod.name)
//for example, caster system's OnAbilityCast, requires a function name
endfunction
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
local unit u=GetTriggerUnit()
local unit s=GetEventDamageSource()
local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
local texttag tt=CreateTextTag()
local real dmg=GetEventDamage()
if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
if GetPlayerId(GetOwningPlayer(u))==12 then
call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
else
call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
endif
call SetTextTagPosUnit(tt, u, 0)
call SetTextTagColor(tt, 255, 255, 255, 255)
call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
call SetTextTagPermanent(tt, false)
call SetTextTagLifespan(tt, 1.0)
call SetTextTagFadepoint(tt, 0.0)
endif
call PolledWait(2.0)
call DestroyTextTag(tt)
set u=null
set s=null
set i=0
set dmg=0
set tt=null
endfunction
function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction
function theSDMSTriggerActions takes nothing returns nothing
local trigger UnitEnter=CreateTrigger()
call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)
set UnitEnter=null
endfunction
function InitTrig_the_SDMS_Trigger takes nothing returns nothing
local trigger tr=CreateTrigger()
set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
call TriggerRegisterTimerEventSingle(tr,0.0)
call TriggerAddAction(tr,function theSDMSTriggerActions)
set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
выбираешь все юниты,деструктэйблы,итемы и сохраняеш в кэш а также сохраняешь их координаты,но в мультиплеере кэш нельзя сохранить на диск,так что если надо сохранять в мультиплеере то юзай прелоад а если не надо сохранять на диск то юзай структуры или хэш
Я удалял всеь код кроме етой системы все ефект тотже. также я писал что переносил наработку на иную мапу и там все работало. понятно что проблема не в коде..по тому как баг в том что рынок(юнит) меняет владельца, на красного скажем, еслиб не менял багаб небыло, но есть карта где он есть.. на разных мапах при абсолютно едентичных настройках юнитов, и коде(никакого второстепенного кода нет тока тот что в 1м посту)
опшем так я психанул и начал отрезать куски из мапы, сначала в 10 раз удалил весь код кроме наработки, затем удалил итемы, и вернул код и вот чудо баг пропал, =============================================================================
думаю проблема была в том что иды предметам я в ручную прописывал, там была своя закономерность, но увы теперь придется периписать все иды предметов, и заминить их в коде что очень ни удобно и моторно=(
Если во всех картах одинаковый id, значит покопайся в хеше.
Это как, можно в личку?
Проблему решил, переделав стандартную способность, а не создавая нестандартную. Это почти что панацея от подобных случаев, когда id (ещё называют raw-code) способности меняется.
nvc123, если честно мне его действия очень напоминают хитрое попрошайничество. Да и на сайте тем по типу - "Как посчитать количество предметов в области" уже штук 3-4 было. Да и я бы ему рекомендовал провернуть такой трюк сначала с одним предметом а потом понять принцип и склепать по аналогии еще сколько нужно раз. И не проще ли сделать 1 круг для все этих 10 предметов и рядом круг для жертвы?
"Далеко твоя рпг не уйдёт" моя рпг тебя переживет.
Ты тоже когда родился не умел так нагло хамить незнакомым людям, научился же как то. Люди с более серьезным отношением к миру чем "изменить систему один не могу но буду плакать об этом" могут изучить все что захотят и даже в одиночку будут стоить больше чем тысяча "всегда сдающихся" людей,
и тот человек (Да удалось, даже был лаунчер для этой игры. Forgotten Land) это подтвердил, хотя я уверен что он быстро опустил руки.
p.s чел прекращай настраивать других людей на поражение, если ты что-то можешь дать - дай, если хочешь чтобы другие не добились успеха чтобы ты оказался прав и не чувствовал себя ущербным то просто отойди в сторону.
Я на все твои выпады отвечу лишь одной фразой:
"Dota была обычной картой для warcraft 3 и она поначалу тоже была пустой ".
Ответы получены, пару шарящих людей нашел, (дай бог каждому такого человека который рассказал мне о многом что тут считают до сих пор невозможным)
Спасибо за поддержку! и особенно одному пользователю. Ведь именно благодаря таким людям как life2smiler, люди не делают хорошие проэкты а другие люди соответственно вынуждены играть в некачественные карты и в течении нескольких лет не находить решения наболевших проблем
(если нет хотя бы 1 го человека кому удалось сделать что-то необычное то все остальные продолжат считать это невозможным) А сегодня стало ясно что могут не знать о чем либо не только потому что никто не делал этого, а потому что человек на самом деле сделал но никому говорить не стал :)
короче лаунчер при запуске палит версию вара и посылает на нужный серв
все
по другому просто никак не может быть
а то, сколько серверов держит один проект - дело уже другое
и с одного пк можно запустить сколько угодно серверов, при наличии рук и ресурсов
Увы низя указывать рекурсии на взаимосвязи элементов или юнитов.
Если вы хотите отменять апгрейды зданий, делайте их кастомно к примеру на основе продажи\подготовки юнитов, только здание продало\построило определённого юнита сразу же изменть его на другое, попутно удалив подготовленного\проданного юнита.
Такой принцип используется в TD от близзард ''Лазурные башни".
Можно попробовать с помощью морфов сфинкса.
Maniac_91, фактически такая генерация и была придумана Нотчем для майнкрафта. Просто обычная система "биомов". Это кстати очень неплохо, ведь для каждого биома ты можешь подгружать свой пул декораций и так разнообразить визуальную составляющую игры.
Так же перед началом игры (после загрузки карты), можно сделать плашку "загрузки генерации", которая показывала бы пользователям % готовность генерации. А далее, таймерами или вейтами, выставлять "отдых" для варкрафта из-за нагрузки. Мол, каждые 1500 выполнений триггера - отдохни на секунду, хорош.
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.
vLAd333, с помощью сайта конвертировал в какой формат?
посмотрел карту
блин я же просил проверить пути к текстурам
мало того что везде war3mapImported которого быть не должно
так ещё и модель требует разрезать картинку на 4 части
короче читаем статьи про создание лоадскринов и импорт файлов в карту
» WarCraft 3 / Knockback
» WarCraft 3 / Типы переменных
» WarCraft 3 / Два босса с одним здоровьем.
» WarCraft 3 / Выполнение заданий
» WarCraft 3 / Не могу найти статью
» WarCraft 3 / Модели из dota 2?
» WarCraft 3 / ИИ
» WarCraft 3 / Сделать позиционный звук
» WarCraft 3 / Не открывается карта
» WarCraft 3 / Как заменить текстуры рельефа?
» WarCraft 3 / Как сделать плавающий текст?
» WarCraft 3 / Что делать
» WarCraft 3 / как заказать модель?
» WarCraft 3 / TEXTTAG
» WarCraft 3 / Как показать изображение
» WarCraft 3 / Баг с анимацией.
» WarCraft 3 / Fatal error при запуске карты.
» WarCraft 3 / Модель/Текстура неба
» WarCraft 3 / Крашит карту
» WarCraft 3 / vJass начало
» WarCraft 3 / 7-ой тип атаки
» WarCraft 3 / Как удалить все предметы на карте?
» WarCraft 3 / Хост бот
» WarCraft 3 / Рекурсия
» WarCraft 3 / Текст на фоновом экране